package org.ykh.springcloud.service;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;

/**
 * @author ykh
 * @create 2022-01-24 21:34
 */
@Component
@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT"/*, fallback = PaymentFallbackService.class*/)
//指定服务降级的处理类，该处理类需要实现当前接口，实现的方法为相应的服务降级方法
public interface PaymentHystrixService {
    //一定要开启feign.hystrix.enabled: true,即feign将开启断路器包装所有方法，但fing默认最大等候一秒。
    // 所以8001Controller的方法如果大于1会导致无论如何都调用降级方法，fallback中的降级服务.可设置解决
    //读取资源超时时间解决
    //但是Hystrix也有一个默认为一的超时时间，需要设置
    @GetMapping("/payment/hystrix/ok/{id}")
    String paymentInfo_OK(@PathVariable("id") Integer id);

    @GetMapping("/payment/hystrix/timeout/{id}")
    String paymentInfo_TimeOut(@PathVariable("id") Integer id);
}
